47 research outputs found

    Deriving Abstractions from a Software Object Network

    Get PDF
    High level abstractions from programs can be obtained by extracting relational information from programs to form a software object network, and deriving high level abstractions from that network. The authors show how to obtain several interesting abstractions such as subsystems, ripple effects, logical layers and modules from a software object network represented by a C program database. These abstractions assist programmers in understanding the program structure and point out potential areas for improvement. This document then demonstrates how rule-based software restructing can be performed by accessing the relational information stored in the program database. Keywords: Computer programming; CIA(C Information Abstraction)

    Crowdsensing the Speaker Count in the Wild: Implications and Applications

    Get PDF
    Abstract-The Mobile Crowd Sensing (MCS) paradigm enables large-scale sensing opportunities at lower deployment costs than dedicated infrastructures by utilizing the large number of today's mobile devices. In the context of MCS, end users with sensing and computing devices can share and extract information of common interest. In this article, we examine Crowd++, a MCS application, which accurately estimates the number of people talking in a certain place through unsupervised machine learning analysis on audio segments captured by mobile devices. Such a technique can find application in many domains, such as crowd estimation, social sensing, and personal well-being assessment. In this article, we demonstrate the utility of this technique in the context of conference room usage estimation, social diary, and social engagement in a power efficient manner followed by a discussion on privacy and possible optimizations to Crowd++ software

    Dagger: A Tool to Generate Program Graphs

    No full text
    Dagger is a tool that generates program graphs to selectively visualize a software structure. The design of dagger achieves a strong degree of language independence by exploiting the duality between a class of entity-relationship databases and attributed directed graphs. This paper describes the C and C++ versions of dagger, which map a selected subset of relationships stored in a program database to a graph specification, decorate the graph with display attributes, and then pass it to layout tools or interactive graph browsers. Dagger takes output from database queries to generate a large variety of interesting program graphs, including header file hierarchy, module binding, and type inheritance graphs. This paper describes the graph generation process surrounding dagger and a sample of tools involved in the process. In particular, we describe how a closure operator works in tandem with dagger to control graph complexity by generating reachability graphs where sub-structures are selec..

    The C++ Information Abstractor

    No full text
    or Judith E. Grass Yih-Farn Chen AT&T Bell Laboratories Murray Hill, NJ 07974 The C++ Information Abstractor, cia++, builds a database of information extracted from C++ programs. The database can serve as a foundation for the rapid development of C++ programming tools. Such tools include tools that graphically display various views of the program structure, tools that answer queries about program symbols and relationships, and tools that extract self-contained components from a large system. Cia++ is a new abstractor implementation based on the design of the C Information Abstractor. This paper describes the conceptual model of cia++ and examples of relational views and applications developed on the C++ program database. It also presents some aspects of the implementation. 1 Motivation C++ is rapidly becoming a language of choice for developing large application programs due to its object-oriented paradigm. Many new C++ programmers come from the C programming community. The transit..

    WebCiao: A Website Visualization and Tracking System

    No full text
    WebCiao is a system for visualizing and tracking the structures of websites by creating, differencing, and analyzing archived website databases. The architecture of WebCiao allows users to create customized website analysis tools by combining a set of query and analysis operators on a virtual database pipeline. Each virtual database sent on the pipe can be converted to directed graphs, database views, or HTML reports. Within a graph view, operators can be fired from any graph node to study a selected neighborhood. WebCiao helps creators of large websites to monitor the dynamics of structural changes closely. It also helps web surfers to quickly identify new products and services from a website. An on-line demo, Website News, based on the WebCiao technology, has helped sharpen our focus with its daily analysis of new web contents from the internet and telecommunications industries. 1. Introduction The complexity and ever-changing nature of major websites are presenting problems to both..

    Incl: A Tool to Analyze Include Files

    No full text
    or [?] creates a C program database from C source files that stores, among other things, the reference relationships between all global program objects (types, macros, functions, variables, and files). To analyze relationships among include files, we need all of these reference relationships. In fact, the determination of when to exclude an include file must be done with care so that the meaning of the program does not change. Based on the CIA 2 database, we shall describe precise conditions for an include file to become unnecessary during compilation and give a linear time algorithm to detect such files. 2 In this paper, we use cia to refer to the tool and CIA to refer to the system and concept. We implemented the include file analysis algorithm and many of its common applications in a tool, incl, which can be used to generate textual or graphical representations of relationships among include files. It can also generate scripts usable with other programs such as ed, the line ..

    Ciao: A Graphical Navigator for Software and Document Repositories

    No full text
    Programmers frequently have to retrieve and link information from various software documents to accomplish a maintenance task. Ciao is a graph-based navigator that helps programmers query and browse structural connections embedded in di erent software and document repositories. A repository consists of a collection of source documents with an associated database that describes their structure. Ciao supports repositories organized in an architecture style called Aero, which exploits the duality between a class of entity-relationship (ER) databases and directed attributed graphs (DAG). Database queries and graph analysis operators in Aero are plug-compatible because they all take an ER database and produce yet another ER database by default. Various presentation lters generate graph views, source views, and relational views from any compatible ER database. The architecture promotes the construction of successively more complex operators using a notion of virtual database pipelines. Ciao has been instantiated for C and C++ program databases, and program di erence databases. The latter allows programmers to explore program structure changes by browsing and expanding graphs that highlight changed, deleted, and added entities and relationships. The unifying ER model under ciao also allows users to navigate di erent software repositories and make necessary connections. We have linked program di erence databases and modi cation request (MR) databases so that users can investigate the connections between MRs and a ected entities. Ciao has been applied to several large communications software projects and we report experiences and lessons learned from these applications
    corecore